Datum = 
/* 
Script librement propose par DAXONE.FR - octobre 2020.
***
Pour utiliser ce script, penser à preciser date de debut et de fin (voir section variables).
    Date de debut et date de fin peuvent etre calculees dynamiquement à partir de la date principale ('Date1') et la fonction CALENDAR 
        CALENDAR ( DATE ( YEAR ( MIN ( Date1 ) ) , 1 , 1 ),
                   DATE ( YEAR ( MAX ( Date1 ) ) , 12 , 31 ) )
    Dans ce cas, il convient d'ignorer la section VAR et de remplacer la fonction CALENDAR ligne 26 par les lignes ci-dessus
Apres sa creation, trier la table en fonction de la colonne [Date] - question de confort. 
Dans l'onglet Données > Outil de table, marquer la table comme table de date
    et utiliser la fonction "Trier par colonne" pour :
        - trier la colonne Nom du mois par la colonne Annee Mois
        - trier la colonne Nom court du mois par la colonne Annee Mois
        - trier la colonne Mois par la colonne Numero du Mois
        - trier la colonne Nom du jour par la colonne Numero du jour
    De plus, vous pouvez modifier le format du champ Date (par ex. dd/MM/yy) pour ne pas avoir les heures affichees
Dans la vue Modele, lier Datum à la table des faits contenant les dates de transactions, 
    en definissant la liaison active sur la date la plus importante
    et le cas echeant des liaisons inactives sur les autres dates utiles
    (ou dupliquez la table Datum avec la formule-type Datum2 = Datum)
Enfin il est conseille de masquer les champs de type Date lies à la table Datum
    et de masquer les champs Numero du jour et du mois de la table Datum
***
Remarque: dans l'etat actuel, les jours feries n'apparaissent pas dans ce script - à suivre
 */

VAR DebDate = DATE(2018,1,1)
VAR FinDate = DATE(2019,12,31)
RETURN
ADDCOLUMNS(CALENDAR(DebDate,FinDate),
           "Annee", FORMAT([Date],"YYYY"),
           "Trimestre" , "T"&FORMAT([Date],"Q"),
           "Numero du mois", MONTH([Date]),
           "Mois", "M"&FORMAT([Date],"M"),
           "Annee mois", FORMAT([Date],"YYYYMM"),
           "Nom du mois", FORMAT([Date],"MMMM YY") ,
           "Nom court du mois", FORMAT([Date],"MMM YY") ,
           "Semaine" , "S" & FORMAT(WEEKNUM([Date],2),"00"),
-- mise en place de la semaine ISO 8601 (WEEKNUM([Date],21)
           "Semaine ISO" , "W" & FORMAT(WEEKNUM([Date],21),"00") ,
-- mise en place de la colonne annee-semaine ISO (pour le cumul hebdomadaire)
           "Annee Sem ISO" , VAR An = YEAR([Date]) 
                             VAR Sem = WEEKNUM([Date],2) 
                             VAR SemISO = WEEKNUM([Date],21) RETURN
                            IF( 
                                AND (SemISO < 5, Sem > 50),
                                An+1,
                                IF(
                                    AND (SemISO > 50, Sem < 5),
                                    An-1,
                                    An
                                )
                            ) 
                            & "-W" & FORMAT(SemISO,"00") ,
           "Numero du jour" , WEEKDAY([Date],2),
           "Nom du jour", FORMAT([Date],"DDDD"),
           "Jour ouvre" , IF(WEEKDAY([Date],2)<6,"Ouvre","Week-end")
)